# For each..next

for each..next 制御ステートメントは、コンマ区切りリストの各値に対して、1 つまたは複数のステートメントを実行するスクリプト反復構文です。for と next で囲まれたループ内のステートメントは、リストの各値で指定された回数分実行されます。

構文:

現在のディレクトリ内のファイルとディレクトリ名のリストの生成を可能にする特殊構文です。

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

引数：

引数

| 引数 | 説明 |
| --- | --- |
| var | ループ実行のたびに、リストから新しい値を取得するスクリプト変数名。var が next の後に指定されている場合は、対応する for each の後に検出されるものと同じ変数名である必要があります。 |

var 変数の値は、ループ内のステートメントで変更できますが、これは良いプログラミングとは言えません。

exit for 節がループ内で出現した場合、スクリプトの実行はループの終了を示す next 節の後の最初のステートメントに移ります。exit for 節は、when や unless サフィックスを使用して条件を付けることができます。

情報メモfor each..next ステートメントは制御ステートメントであり、セミコロンまたは改行コードで終わっているため、使用可能な 3 つの節 (for each、exit for、next) が行をまたぐことはできません。

構文:

list := item { , item }

item := constant | (expression) | filelist mask | dirlist mask | fieldvaluelist mask

引数

| 引数 | 説明 |
| --- | --- |
| constant | 任意の数値または文字列。スクリプトに直接書き込まれた文字列は単一引用符で囲む必要があります。単一引用符で囲まれていない文字列は、変数として解釈され、変数の値が使用されます。数字は単一引用符で囲む必要はありません。 |
| expression | 任意の式。 |
| mask | 有効なファイル名の文字や、標準的なワイルドカード文字 \* と ? を含むファイル名またはディレクトリ名のマスク。<br><br>絶対ファイル パスや lib:// パスを使用できます。 |
| condition | True または False の評価を実施する論理式。 |
| statements | 1 つ以上の Qlik Sense スクリプト ステートメントのグループ。 |
| filelist mask | この構文は、ファイル名のマスクに一致する現在のディレクトリ内にある、すべてのファイルのコンマ区切りリストを生成します。<br><br>情報メモこの引数は、標準モードのライブラリ接続のみに対応しています。をご覧ください[ファイル システム アクセス制御](https://help.qlik.com/ja-JP/sense/May2026/Subsystems/Hub/Content/Sense_Hub/LoadData/file-system-access-restriction.htm) |
| dirlist mask | この構文は、ディレクトリ名のマスクに一致する現在のフォルダ内にある、すべてのディレクトリのコンマ区切りリストを生成します。<br><br>情報メモこの引数は、標準モードのライブラリ接続のみに対応しています。をご覧ください[ファイル システム アクセス制御](https://help.qlik.com/ja-JP/sense/May2026/Subsystems/Hub/Content/Sense_Hub/LoadData/file-system-access-restriction.htm) |
| fieldvaluelist mask | この構文は、Qlik Sense にすでにロードされた項目の値を使って繰り返されます。 |

警告メモQlik Web ストレージ プロバイダ コネクタ とその他の DataFile 接続は、ワイルドカード (\* および ?) の使用に対応していません。

例1： ファイルのリストのロード

```
// LOAD the files 1.csv, 3.csv, 7.csv and xyz.csv
for each a in 1,3,7,'xyz'
   LOAD * from file$(a).csv;
next
```

例2： ファイル リストをディスクに作成

この例では、フォルダにあるすべての Qlik Sense 関連ファイルのリストをロードしています。

```

sub DoDir (Root)
   for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvf', 'qvd'

      for each File in filelist (Root&'/*.' &Ext)

         LOAD 
            '$(File)' as Name, 
            FileSize( '$(File)' ) as Size, 
            FileTime( '$(File)' ) as FileTime
         autogenerate 1;

      next File

   next Ext
   for each Dir in dirlist (Root&'/*' )

      call DoDir (Dir)

   next Dir

end sub

call DoDir ('lib://DataFiles')
```

例3： 項目の値を使って繰り返し

この例は、ロードされた値のリストである FIELD を使って繰り返され、新しい項目 NEWFIELD を生成します。FIELD の 1 つの値につき、2 つの NEWFIELD レコードが作成されます。

```

load * inline [
FIELD
one
two
three
];

FOR Each a in FieldValueList('FIELD')
LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2;
NEXT a 
```

この結果、テーブルは次のようになります。

Example table

| NEWFIELD |
| --- |
| one-1 |
| one-2 |
| two-1 |
| two-2 |
| three-1 |
| three-2 |

## 詳細を見る

* [For..next](https://help.qlik.com/ja-JP/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/For.htm)
* [Next](https://help.qlik.com/ja-JP/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/Next.htm)
* [Exit](https://help.qlik.com/ja-JP/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/Exit.htm)